package com.zed.api.games;

import com.zed.api.common.collection.MemberCollection;

/**
 * 游戏关卡集合
 *
 * @author Zed
 */
public interface GameLevels<S, A extends Action> extends MemberCollection<GameLevel<S, A>> {

    /**
     * 获取当前关卡
     *
     * @param level {@link int},关卡
     * @return {@link GameLevel},游戏关卡,可能为null
     */
    GameLevel<S, A> findGameLevel(int level);

    /**
     * 获取第一关卡
     *
     * @return {@link GameLevel},游戏关卡
     */
    default GameLevel<S, A> getFirst() {
        return this.getItems()
                .stream()
                .findFirst().orElse(null);
    }

    /**
     * 获取最后关卡
     *
     * @return {@link GameLevel},游戏关卡
     */
    default GameLevel<S, A> getEnd() {
        int index = this.size() - 1;
        return this.getItems().get(index);
    }

}
